home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-16 | 38.8 KB | 1,210 lines |
- Newsgroups: comp.sources.misc
- X-UNIX-From: dvadura@watdragon.waterloo.edu
- subject: v15i091: dmake version 3.6 patch 1 (part 02/5)
- from: Dennis Vadura <dvadura@watdragon.waterloo.edu>
- Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
-
- Posting-number: Volume 15, Issue 91
- Submitted-by: Dennis Vadura <dvadura@watdragon.waterloo.edu>
- Archive-name: dmake-3.6/patch02
-
- #!/bin/sh
- # this is part 2 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file dm36.p1 continued
- #
- CurArch=2
- if test ! -r s2_seq_.tmp
- then echo "Please unpack part 1 first!"
- exit 1; fi
- ( read Scheck
- if test "$Scheck" != $CurArch
- then echo "Please unpack part $Scheck next!"
- exit 1;
- else exit 0; fi
- ) < s2_seq_.tmp || exit 1
- sed 's/^X//' << 'SHAR_EOF' >> dm36.p1
- XX{
- XX struct ar_hdr arhdr; /* external archive header */
- XX
- XX fseek(f, - (off_t) (sizeof(arhdr) - sizeof(arhdr.ar_name)), 1);
- XX
- XX#if ASCARCH
- XX fprintf(f, "%lu", now);
- XX#else
- XX fwrite((char *)now, sizeof(now), 1, f);
- XX#endif
- XX
- XX return( ferror(f) ? 0 : 1 );
- XX}
- XX
- XX
- XX#if LC
- XXtypedef struct mem {
- XX time_t m_time; /* modify time of member*/
- XX struct mem *m_next; /* next member in lib */
- XX char m_valid; /* valid cache entry */
- XX char m_name[1]; /* lib member name */
- XX} MEM, *MEMPTR;
- XX
- XXtypedef struct lib {
- XX struct lib *lb_next; /* next library in list */
- XX struct mem *lb_members; /* list of lib members */
- XX char lb_valid; /* valid cache entry */
- XX char *lb_name; /* library name */
- XX} LIB, *LIBPTR;
- XX
- XXstatic LIBPTR _cache = NIL(LIB);
- XXstatic MEMPTR _find_member ANSI(( LIBPTR, char * ));
- XX
- XXstatic int
- XX_check_cache( name, lib, pmtime, touch )/*
- XX==========================================
- XX Check to see if we have cached member in lib, if so return time in pmtime
- XX and return TRUE, otherwise return FALSE, if touch is TRUE then touch
- XX the archive member instead. */
- XXchar *name;
- XXchar *lib;
- XXtime_t *pmtime;
- XXint touch;
- XX{
- XX register MEMPTR mp;
- XX register LIBPTR lp;
- XX
- XX for( lp=_cache; lp != NIL(LIB) && lp->lb_name != lib; lp=lp->lb_next );
- XX if( lp == NIL(LIB) ) return( FALSE );
- XX
- XX mp = _find_member( lp, name );
- XX if( mp == NIL(MEM) || !mp->m_valid ) return( FALSE );
- XX
- XX if( touch == TRUE )
- XX {
- XX mp->m_time = *pmtime;
- XX mp->m_valid = 1;
- XX }
- XX else
- XX *pmtime = mp->m_time;
- XX
- XX lp->lb_valid = 1;
- XX lp->lb_members = mp;
- XX
- XX return( TRUE );
- XX}
- XX
- XX
- XX
- XXstatic int
- XX_cache_member( name, lib, mtime )/*
- XX===================================
- XX Cache name in lib along with it's time */
- XXchar *name;
- XXchar *lib;
- XXtime_t mtime;
- XX{
- XX register MEMPTR mp;
- XX register LIBPTR lp;
- XX
- XX for( lp=_cache;
- XX lp != NIL(LIB) && lp->lb_name != NIL(char) && lp->lb_name != lib;
- XX lp=lp->lb_next);
- XX
- XX if( lp == NIL(LIB) )
- XX {
- XX lp = (LIBPTR) malloc(sizeof(LIB));
- XX if( lp == NIL(LIB) ) No_ram();
- XX
- XX lp->lb_name = lib;
- XX lp->lb_members = NIL(MEM);
- XX lp->lb_next = _cache;
- XX lp->lb_valid = 0;
- XX _cache = lp;
- XX }
- XX
- XX /* On UNIX ar does not allow multiple copies of the same .o file to live
- XX * in the same AR file. If this is not TRUE then use the commented out
- XX * version to set the value of mp. */
- XX
- XX /*mp = _find_member(lp, name);*/
- XX mp = NIL(MEM);
- XX
- XX if( mp == NIL(MEM) )
- XX {
- XX mp = (MEMPTR) malloc(sizeof(char)*offsetof(MEM,m_name[strlen(name)+1]));
- XX if( mp == NIL(MEM) ) No_ram();
- XX
- XX strcpy( mp->m_name, name );
- XX mp->m_time = mtime;
- XX
- XX if( lp->lb_members == NIL(MEM) ) {
- XX mp->m_next = mp;
- XX lp->lb_members = mp;
- XX }
- XX else {
- XX mp->m_next = lp->lb_members->m_next;
- XX lp->lb_members->m_next = mp;
- XX lp->lb_members = mp;
- XX }
- XX }
- XX else
- XX mp->m_time = mtime;
- XX
- XX mp->m_valid = 1;
- XX
- XX return( lp->lb_valid );
- XX}
- XX
- XX
- XXstatic MEMPTR
- XX_find_member( lp, name )
- XXLIBPTR lp;
- XXchar *name;
- XX{
- XX register MEMPTR mp = lp->lb_members;
- XX
- XX if( mp == NIL(MEM) ) return(mp);
- XX
- XX do {
- XX if( !strcmp(mp->m_name, name ) ) return( mp );
- XX mp = mp->m_next;
- XX }
- XX while( mp != lp->lb_members );
- XX
- XX return( NIL(MEM) );
- XX}
- XX#endif
- XX
- XX
- XX
- XXvoid
- XXvoid_lcache( lib, member )/*
- XX============================
- XX Void the library cache for lib. If member is NIL(char) then nuke all
- XX of the members, if member is NOT NIL(char) then invalidate only that
- XX member. */
- XXchar *lib;
- XXchar *member;
- XX{
- XX#if LC
- XX register LIBPTR lp;
- XX register MEMPTR mp;
- XX register MEMPTR tmp;
- XX
- XX for( lp=_cache; lp != NIL(LIB) && lp->lb_name != lib; lp=lp->lb_next );
- XX if( lp == NIL(LIB) ) return;
- XX
- XX if( member == NIL(char) ) {
- XX mp = lp->lb_members;
- XX do {
- XX tmp = mp->m_next;
- XX (void) free( mp );
- XX mp = tmp;
- XX } while( mp != lp->lb_members );
- XX
- XX lp->lb_valid = 0;
- XX lp->lb_members = NIL(MEM);
- XX lp->lb_name = NIL(char);
- XX }
- XX else {
- XX mp=lp->lb_members;
- XX do {
- XX if( strcmp( member, mp->m_name) == 0 ) {
- XX lp->lb_members = mp->m_next;
- XX mp->m_valid = 0;
- XX }
- XX
- XX mp=mp->m_next;
- XX } while( mp != lp->lb_members );
- XX }
- XX#endif
- XX}
- XSHAR_EOF
- Xchmod 0640 tos/arlib.c || echo "restore of tos/arlib.c fails"
- Xset `wc -c tos/arlib.c`;Sum=$1
- Xif test "$Sum" != "13301"
- Xthen echo original size 13301, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/config.h &&
- XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/unix/sysvr3/RCS/config.h,v 1.1 90/10/06 12:06:39 dvadura Exp $
- XX-- SYNOPSIS -- Configurarion include file.
- XX--
- XX-- DESCRIPTION
- XX-- There is one of these for each specific machine configuration.
- XX-- It can be used to further tweek the machine specific sources
- XX-- so that they compile.
- XX--
- XX-- AUTHOR
- XX-- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- XX-- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- XX--
- XX-- COPYRIGHT
- XX-- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- XX--
- XX-- This program is free software; you can redistribute it and/or
- XX-- modify it under the terms of the GNU General Public License
- XX-- (version 1), as published by the Free Software Foundation, and
- XX-- found in the file 'LICENSE' included with this distribution.
- XX--
- XX-- This program is distributed in the hope that it will be useful,
- XX-- but WITHOUT ANY WARRANTY; without even the implied warrant of
- XX-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XX-- GNU General Public License for more details.
- XX--
- XX-- You should have received a copy of the GNU General Public License
- XX-- along with this program; if not, write to the Free Software
- XX-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- XX--
- XX-- LOG
- XX-- $Log: config.h,v $
- XX * Revision 1.1 90/10/06 12:06:39 dvadura
- XX * dmake Release, Version 3.6
- XX *
- XX*/
- XX
- XX#include <osbind.h>
- XX
- XX/* define this for configurations that don't have the coreleft function
- XX * so that the code compiles. To my knowledge coreleft exists only on
- XX * Turbo C, but it is needed here since the function is used in many debug
- XX * macros. */
- XX#define coreleft() Malloc(-1L)
- XX
- XX/* Define the getcwd function that is used in the code, since BSD does
- XX * not have getcwd, but call it getwd instead. */
- XXextern char *getcwd ANSI((char *, int));
- XX
- XX/*No parallelism in TOS so don't need to explode the graph. */
- XX#define Explode_prq(a,b,c)
- XSHAR_EOF
- Xchmod 0640 tos/config.h || echo "restore of tos/config.h fails"
- Xset `wc -c tos/config.h`;Sum=$1
- Xif test "$Sum" != "1974"
- Xthen echo original size 1974, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/config.mk &&
- XX# This is an OS specific configuration file
- XX# It assumes that OBJDIR, TARGET and DEBUG are previously defined.
- XX# It defines CFLAGS, LDARGS, CPPFLAGS, STARTUPFILE, LDOBJS
- XX# PRINTER, PRINTFLAGS
- XX# It augments SRC, OBJDIR, TARGET, CFLAGS, LDLIBS
- XX#
- XXPRINTER = hw
- XXPRINTFLAGS = -P$(PRINTER)
- XXSTARTUPFILE = $(OS)/startup.mk
- XXCPPFLAGS = $(CFLAGS)
- XXLDOBJS = $(CSTARTUP) $(OBJDIR)/{$(<:f)}
- XXLDARGS = $(LDFLAGS) -o $@ $(OBJDIR)/*$O
- XXLDFLAGS += -s
- XXLD = $(CC)
- XX
- XX# Debug flags
- XXDB_CFLAGS = -g -DDBUG
- XXDB_LDFLAGS = -g
- XXDB_LDLIBS =
- XX
- XX# NO Debug flags
- XXNDB_CFLAGS = -O
- XXNDB_LDFLAGS =
- XXNDB_LDLIBS =
- XX
- XX# Local configuration modifications for CFLAGS.
- XXCFLAGS += -I$(OS)
- XX
- XX# Sources that must be defined for each different version
- XXOSSRC := arlib.c dirbrk.c rmprq.c ruletab.c runargv.c
- XXSRC += $(OSSRC)
- XX.SETDIR=$(OS) : $(OSSRC)
- XX
- XX# Set source dirs so that we can find files named in this
- XX# config file.
- XX.SOURCE.h : $(OS)
- XX
- XX# See if we modify anything in the lower levels.
- XX.IF $(OSRELEASE) != $(NULL)
- XX .INCLUDE .IGNORE : $(OS)$(DIRSEPSTR)$(OSRELEASE)$(DIRSEPSTR)config.mk
- XX.END
- XX
- XX# Set the proper macros based on whether we are making the debugging version
- XX# or not.
- XX.IF $(DEBUG)
- XX CFLAGS += $(DB_CFLAGS)
- XX LDFLAGS += $(DB_LDFLAGS)
- XX LDLIBS += $(DB_LDLIBS)
- XX
- XX SILENT := $(.SILENT)
- XX .SILENT := yes
- XX TARGET := db$(TARGET)
- XX OBJDIR := $(OBJDIR).dbg
- XX .SILENT := $(SILENT)
- XX
- XX SRC += dbug.c malloc.c
- XX HDR += db.h
- XX .SETDIR=common : dbug.c malloc.c
- XX.ELSE
- XX CFLAGS += $(NDB_CFLAGS)
- XX LDFLAGS += $(NDB_LDFLAGS)
- XX LDLIBS += $(NDB_LDLIBS)
- XX.END
- XSHAR_EOF
- Xchmod 0640 tos/config.mk || echo "restore of tos/config.mk fails"
- Xset `wc -c tos/config.mk`;Sum=$1
- Xif test "$Sum" != "1536"
- Xthen echo original size 1536, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/dirbrk.c &&
- XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/unix/RCS/dirbrk.c,v 1.1 90/10/06 12:07:00 dvadura Exp $
- XX-- SYNOPSIS -- define the directory separator string.
- XX--
- XX-- DESCRIPTION
- XX-- Define this string for any character that may appear in a path name
- XX-- and can be used as a directory separator. Also provide a function
- XX-- to indicate if a given path begins at the root of the file system.
- XX--
- XX-- AUTHOR
- XX-- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- XX-- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- XX--
- XX-- COPYRIGHT
- XX-- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- XX--
- XX-- This program is free software; you can redistribute it and/or
- XX-- modify it under the terms of the GNU General Public License
- XX-- (version 1), as published by the Free Software Foundation, and
- XX-- found in the file 'LICENSE' included with this distribution.
- XX--
- XX-- This program is distributed in the hope that it will be useful,
- XX-- but WITHOUT ANY WARRANTY; without even the implied warrant of
- XX-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XX-- GNU General Public License for more details.
- XX--
- XX-- You should have received a copy of the GNU General Public License
- XX-- along with this program; if not, write to the Free Software
- XX-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- XX--
- XX-- LOG
- XX-- $Log: dirbrk.c,v $
- XX * Revision 1.1 90/10/06 12:07:00 dvadura
- XX * dmake Release, Version 3.6
- XX *
- XX*/
- XX
- XX#include "extern.h"
- XX#include <ctype.h>
- XX
- XX/* tos uses /, \, and : */
- XXchar* DirBrkStr = "/\\:";
- XX
- XX/*
- XX** Return TRUE if the name is the full specification of a path name to a file
- XX** starting at the root of the file system, otherwise return FALSE
- XX*/
- XXint
- XXIf_root_path(name)
- XXchar *name;
- XX{
- XX return( (strchr(DirBrkStr, *name) != NIL(char)) ||
- XX (isalpha(*name) && name[1] == ':') );
- XX}
- XSHAR_EOF
- Xchmod 0640 tos/dirbrk.c || echo "restore of tos/dirbrk.c fails"
- Xset `wc -c tos/dirbrk.c`;Sum=$1
- Xif test "$Sum" != "1883"
- Xthen echo original size 1883, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/make.sh &&
- XXmkdir objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O infer.c
- XXmv infer.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O make.c
- XXmv make.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O stat.c
- XXmv stat.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O expand.c
- XXmv expand.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O string.c
- XXmv string.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O hash.c
- XXmv hash.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O dag.c
- XXmv dag.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O dmake.c
- XXmv dmake.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O path.c
- XXmv path.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O imacs.c
- XXmv imacs.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O sysintf.c
- XXmv sysintf.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O parse.c
- XXmv parse.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O getinp.c
- XXmv getinp.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O quit.c
- XXmv quit.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O basename.c
- XXmv basename.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O dump.c
- XXmv dump.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O macparse.c
- XXmv macparse.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O rulparse.c
- XXmv rulparse.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O percent.c
- XXmv percent.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O function.c
- XXmv function.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O tos/arlib.c
- XXmv arlib.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O tos/dirbrk.c
- XXmv dirbrk.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O tos/rmprq.c
- XXmv rmprq.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O tos/ruletab.c
- XXmv ruletab.o objects
- XXgcc -c -DHELP -I. -Icommon -Itos -O tos/runargv.c
- XXmv runargv.o objects
- XXgcc -s -o dmake objects/*.o
- XSHAR_EOF
- Xchmod 0640 tos/make.sh || echo "restore of tos/make.sh fails"
- Xset `wc -c tos/make.sh`;Sum=$1
- Xif test "$Sum" != "1670"
- Xthen echo original size 1670, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/rmprq.c &&
- XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/unix/RCS/rmprq.c,v 1.1 90/10/06 12:07:06 dvadura Exp $
- XX-- SYNOPSIS -- remove prerequisites code.
- XX--
- XX-- DESCRIPTION
- XX-- This code is different for DOS and for UNIX and parallel make
- XX-- architectures since the parallel case requires the rm's to be
- XX-- run in parallel, whereas DOS guarantees to run them sequentially.
- XX--
- XX-- AUTHOR
- XX-- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- XX-- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- XX--
- XX-- COPYRIGHT
- XX-- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- XX--
- XX-- This program is free software; you can redistribute it and/or
- XX-- modify it under the terms of the GNU General Public License
- XX-- (version 1), as published by the Free Software Foundation, and
- XX-- found in the file 'LICENSE' included with this distribution.
- XX--
- XX-- This program is distributed in the hope that it will be useful,
- XX-- but WITHOUT ANY WARRANTY; without even the implied warrant of
- XX-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XX-- GNU General Public License for more details.
- XX--
- XX-- You should have received a copy of the GNU General Public License
- XX-- along with this program; if not, write to the Free Software
- XX-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- XX--
- XX-- LOG
- XX-- $Log: rmprq.c,v $
- XX * Revision 1.1 90/10/06 12:07:06 dvadura
- XX * dmake Release, Version 3.6
- XX *
- XX*/
- XX
- XX#include "extern.h"
- XX#include "alloc.h"
- XX
- XXvoid
- XXRemove_prq( tcp )
- XXCELLPTR tcp;
- XX{
- XX tcp->ce_flag &= ~(F_MADE|F_VISITED);
- XX tcp->CE_HOW->hw_flag &= ~(F_MADE|F_VISITED);
- XX tcp->ce_time = 0L;
- XX
- XX Make( tcp, tcp->CE_HOW, NIL(CELL) );
- XX}
- XSHAR_EOF
- Xchmod 0640 tos/rmprq.c || echo "restore of tos/rmprq.c fails"
- Xset `wc -c tos/rmprq.c`;Sum=$1
- Xif test "$Sum" != "1718"
- Xthen echo original size 1718, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/ruletab.c &&
- XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/unix/RCS/ruletab.c,v 1.1 90/10/06 12:07:08 dvadura Exp $
- XX-- SYNOPSIS -- Default initial configuration of dmake.
- XX--
- XX-- DESCRIPTION
- XX-- Define here the initial set of rules that are defined before
- XX-- dmake performs any processing.
- XX--
- XX-- AUTHOR
- XX-- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- XX-- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- XX--
- XX-- COPYRIGHT
- XX-- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- XX--
- XX-- This program is free software; you can redistribute it and/or
- XX-- modify it under the terms of the GNU General Public License
- XX-- (version 1), as published by the Free Software Foundation, and
- XX-- found in the file 'LICENSE' included with this distribution.
- XX--
- XX-- This program is distributed in the hope that it will be useful,
- XX-- but WITHOUT ANY WARRANTY; without even the implied warrant of
- XX-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XX-- GNU General Public License for more details.
- XX--
- XX-- You should have received a copy of the GNU General Public License
- XX-- along with this program; if not, write to the Free Software
- XX-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- XX--
- XX-- LOG
- XX-- $Log: ruletab.c,v $
- XX * Revision 1.1 90/10/06 12:07:08 dvadura
- XX * dmake Release, Version 3.6
- XX *
- XX*/
- XX
- XX/* These are control macros for dmake that MUST be defined at some point
- XX * if they are NOT dmake will not work! These are default definitions. They
- XX * may be overridden inside the .STARTUP makefile, they are here
- XX * strictly so that dmake can parse the STARTUP makefile */
- XX
- XXstatic char *_rules[] = {
- XX "MAXPROCESSLIMIT := 10",
- XX "MAXLINELENGTH := 8190",
- XX ".IMPORT .IGNORE: ROOTDIR",
- XX ".MAKEFILES : makefile.mk Makefile makefile",
- XX ".SOURCE : .NULL",
- XX#include "startup.h"
- XX 0 };
- XX
- XXchar **Rule_tab = _rules; /* for sundry reasons in Get_environment() */
- XSHAR_EOF
- Xchmod 0640 tos/ruletab.c || echo "restore of tos/ruletab.c fails"
- Xset `wc -c tos/ruletab.c`;Sum=$1
- Xif test "$Sum" != "1940"
- Xthen echo original size 1940, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/runargv.c &&
- XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/msdos/RCS/runargv.c,v 1.1 90/10/06 12:05:30 dvadura Exp $
- XX-- SYNOPSIS -- run a sub process.
- XX--
- XX-- DESCRIPTION
- XX-- Use spawn to run a subprocess.
- XX--
- XX-- AUTHOR
- XX-- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- XX-- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- XX--
- XX-- COPYRIGHT
- XX-- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- XX--
- XX-- This program is free software; you can redistribute it and/or
- XX-- modify it under the terms of the GNU General Public License
- XX-- (version 1), as published by the Free Software Foundation, and
- XX-- found in the file 'LICENSE' included with this distribution.
- XX--
- XX-- This program is distributed in the hope that it will be useful,
- XX-- but WITHOUT ANY WARRANTY; without even the implied warrant of
- XX-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XX-- GNU General Public License for more details.
- XX--
- XX-- You should have received a copy of the GNU General Public License
- XX-- along with this program; if not, write to the Free Software
- XX-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- XX--
- XX-- LOG
- XX-- $Log: runargv.c,v $
- XX * Revision 1.1 90/10/06 12:05:30 dvadura
- XX * dmake Release, Version 3.6
- XX *
- XX*/
- XX
- XX#include "sysintf.h"
- XX#include "extern.h"
- XX#include <process.h>
- XX#include <string.h>
- XX#include <errno.h>
- XX
- XXstatic int _abort_flg = FALSE;
- XXstatic void _add_child ANSI((CELLPTR, HOWPTR, int));
- XXstatic void _finished_child ANSI((int));
- XX
- XXint
- XXrunargv(target, how, ignore, group, last, shell, cmd)
- XXCELLPTR target;
- XXHOWPTR how;
- XXint ignore;
- XXint group;
- XXint last;
- XXint shell;
- XXchar *cmd;
- XX{
- XX int status;
- XX char **argv;
- XX
- XX argv = Pack_argv( group, shell, cmd );
- XX _add_child(target, how, ignore);
- XX status = spawnvp(P_WAIT, *argv, argv);
- XX if( status == -1 ) Error("%s: %s", argv[0], strerror(errno));
- XX _finished_child(status);
- XX if( last && !Doing_bang ) Update_time_stamp( target, how );
- XX
- XX return( 0 );
- XX}
- XX
- XX
- XXvoid
- XXClean_up_processes()
- XX{
- XX _abort_flg = TRUE;
- XX _finished_child(-1);
- XX}
- XX
- XX
- XXint
- XXWait_for_child( abort_flg, pid )
- XXint abort_flg;
- XXint pid;
- XX{
- XX return(1);
- XX}
- XX
- XX
- XXstatic int _valid = -1;
- XXstatic CELLPTR _tg;
- XXstatic HOWPTR _how;
- XXstatic int _ignore;
- XX
- XXstatic void
- XX_add_child( target, how, ignore )
- XXCELLPTR target;
- XXHOWPTR how;
- XXint ignore;
- XX{
- XX _tg = target;
- XX _ignore = ignore;
- XX _how = how;
- XX _valid = 0;
- XX
- XX Current_target = NIL(HOW);
- XX}
- XX
- XX
- XXstatic void
- XX_finished_child(status)
- XXint status;
- XX{
- XX if( _valid == -1 ) return;
- XX Unlink_temp_files( _how );
- XX _valid = -1;
- XX Handle_result( status, _ignore, _abort_flg, _tg );
- XX}
- XSHAR_EOF
- Xchmod 0640 tos/runargv.c || echo "restore of tos/runargv.c fails"
- Xset `wc -c tos/runargv.c`;Sum=$1
- Xif test "$Sum" != "2637"
- Xthen echo original size 2637, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/startup.h &&
- XX/* This file contains the default value of the MAKESTARTUP variable.
- XX * You must set the quoted string below to the default path to the startup
- XX * variable, so that it gets compiled in. LEAVE ROOTDIR at the front of
- XX * the path. This allows the user to customize his environment for dmake
- XX * by setting up a new ROOTDIR environment variable. */
- XX
- XX"MAKESTARTUP := $(ROOTDIR)/etc/startup.mk",
- XSHAR_EOF
- Xchmod 0640 tos/startup.h || echo "restore of tos/startup.h fails"
- Xset `wc -c tos/startup.h`;Sum=$1
- Xif test "$Sum" != "392"
- Xthen echo original size 392, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/startup.mk &&
- XX# Generic UNIX DMAKE startup file. Customize to suit your needs.
- XX# Should work for both SYSV, and BSD 4.3
- XX# See the documentation for a description of internally defined macros.
- XX#
- XX# Disable warnings for macros redefined here that were given
- XX# on the command line.
- XX__.SILENT := $(.SILENT)
- XX.SILENT := yes
- XX
- XX# Configuration parameters for DMAKE startup.mk file
- XX# Set these to NON-NULL if you wish to turn the parameter on.
- XX_HAVE_RCS := # yes => RCS is installed.
- XX_HAVE_SCCS := # yes => SCCS is installed.
- XX
- XX# Applicable suffix definitions
- XXA := .olb # Libraries
- XXE := # Executables
- XXF := .f # Fortran
- XXO := .o # Objects
- XXP := .p # Pascal
- XXS := .s # Assembler sources
- XXV := ,v # RCS suffix
- XX
- XX# Recipe execution configurations
- XXSHELL := /bin/sh
- XXSHELLFLAGS :=
- XXGROUPSHELL := $(SHELL)
- XXGROUPFLAGS :=
- XXSHELLMETAS := |();&<>?*][$$:\\#`'"
- XXGROUPSUFFIX := .bat
- XXDIVFILE = $(TMPFILE)
- XX
- XX# Standard C-language command names and flags
- XX CPP := /gnu/lib/cpp # C-preprocessor
- XX CC := gcc # C-compiler and flags
- XX CFLAGS +=
- XX
- XX AS := /gnu/lib/as # Assembler and flags
- XX ASFLAGS +=
- XX
- XX LD = $(CC) # Loader and flags
- XX LDFLAGS +=
- XX LDLIBS =
- XX
- XX# Definition of $(MAKE) macro for recursive makes.
- XX MAKE = $(MAKECMD) $(MFLAGS)
- XX
- XX# Definition of Print command for this system.
- XX PRINT = lpr
- XX
- XX# Language and Parser generation Tools and their flags
- XX YACC := yacc # standard yacc
- XX YFLAGS +=
- XX YTAB := y.tab # yacc output files name stem.
- XX
- XX LEX := lex # standard lex
- XX LFLAGS +=
- XX LEXYY := lex.yy # lex output file
- XX
- XX# Other Compilers, Tools and their flags
- XX PC := pc # pascal compiler
- XX RC := f77 # ratfor compiler
- XX FC := f77 # fortran compiler
- XX
- XX CO := co # check out for RCS
- XX COFLAGS += -q
- XX
- XX AR := gar # archiver
- XX ARFLAGS+= ruv
- XX
- XX RM := /gnu/bin/rm # remove a file command
- XX RMFLAGS +=
- XX
- XX# Implicit generation rules for making inferences.
- XX# We don't provide .yr or .ye rules here. They're obsolete.
- XX# Rules for making *$O
- XX %$O : %.c ; $(CC) $(CFLAGS) -c $<
- XX %$O : %$P ; $(PC) $(PFLAGS) -c $<
- XX %$O : %$S ; $(AS) $(ASFLAGS) $<
- XX %$O : %.cl ; class -c $<
- XX %$O : %.e %.r %.F %$F
- XX $(FC) $(RFLAGS) $(EFLAGS) $(FFLAGS) -c $<
- XX
- XX# Executables
- XX %$E : %$O ; $(LD) $(LDFLAGS) -o $@ $< $(LDLIBES)
- XX
- XX# lex and yacc rules
- XX %.c : %.y ; $(YACC) $(YFLAGS) $<; mv $(YTAB).c $@
- XX %.c : %.l ; $(LEX) $(LFLAGS) $<; mv $(LEXYY).c $@
- XX
- XX# This rule tells how to make *.out from it's immediate list of prerequisites
- XX# UNIX only.
- XX %.out :; $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
- XX
- XX# RCS support
- XX.IF $(_HAVE_RCS)
- XX % : %$V $$(@:d)RCS/$$(@:f)$V;- $(CO) $(COFLAGS) $@
- XX .NOINFER : %$V $$(@:d)RCS/$$(@:f)$V
- XX.END
- XX
- XX# SCCS support
- XX.IF $(_HAVE_SCCS)
- XX % : s.% ; get $@
- XX .NOINFER : s.%
- XX.END
- XX
- XX# Recipe to make archive files.
- XX%$A :
- XX[
- XX $(AR) $(ARFLAGS) $@ $?
- XX $(RM) $(RMFLAGS) $?
- XX ranlib $@
- XX]
- XX
- XX# DMAKE uses this recipe to remove intermediate targets
- XX.REMOVE :; $(RM) -f $<
- XX
- XX# AUGMAKE extensions for SYSV compatibility
- XX@B = $(@:b)
- XX@D = $(@:d)
- XX@F = $(@:f)
- XX*B = $(*:b)
- XX*D = $(*:d)
- XX*F = $(*:f)
- XX<B = $(<:b)
- XX<D = $(<:d)
- XX<F = $(<:f)
- XX?B = $(?:b)
- XX?F = $(?:f)
- XX?D = $(?:d)
- XX
- XX# Turn warnings back to previous setting.
- XX.SILENT := $(__.SILENT)
- XX
- XX# Local startup file if any
- XX.INCLUDE .IGNORE: "_startup.mk"
- XSHAR_EOF
- Xchmod 0640 tos/startup.mk || echo "restore of tos/startup.mk fails"
- Xset `wc -c tos/startup.mk`;Sum=$1
- Xif test "$Sum" != "3233"
- Xthen echo original size 3233, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > tos/sysintf.h &&
- XX/*
- XX** assorted bits of system interface, for common routines inside dmake.
- XX** System specific code can be found in the config.h files for each
- XX** of the system specifications.
- XX*/
- XX#include <sys/stat.h>
- XX#include <signal.h>
- XX
- XX#define STAT stat
- XX#define VOID_LCACHE(l,m) (void) void_lcache(l,m)
- XX
- XX/*
- XX** standard C items
- XX*/
- XX#include "stdmacs.h"
- XX
- XX/*
- XX** DOS interface standard items
- XX*/
- XX#define getswitchar() '-'
- XX
- XX/*
- XX** make parameters
- XX*/
- XX#define MAX_PATH_LEN 1024
- XSHAR_EOF
- Xchmod 0640 tos/sysintf.h || echo "restore of tos/sysintf.h fails"
- Xset `wc -c tos/sysintf.h`;Sum=$1
- Xif test "$Sum" != "454"
- Xthen echo original size 454, current size $Sum;fi
- X
- X
- X# Now create the file of patches and apply patch appropriately
- X# shar: Shell Archiver (v1.22)
- X#
- X# Run the following text with /bin/sh to create:
- X# _patches
- X#
- Xsed 's/^X//' << 'SHAR_EOF' > _patches &&
- XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/unix/sysvr3/config.h Sat Oct 6 12:06:40 1990
- XX--- unix/sysvr3/config.h Mon Oct 22 18:01:13 1990
- XX***************
- XX*** 44,51 ****
- XX--- 44,55 ----
- XX * not have getcwd, but call it getwd instead. */
- XX extern char *getcwd ANSI((char *, int));
- XX
- XX+ #ifdef M_XENIX
- XX+ #define PORTAR 1
- XX+ #else
- XX /* Define setvbuf, SysV doesn't have one */
- XX #define setvbuf(fp, bp, type, len) setbuf( fp, NULL );
- XX+ #endif
- XX
- XX /* NCR Tower's don't define size_t */
- XX #ifdef tower
- XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/unix/sysintf.h Sat Oct 6 12:07:12 1990
- XX--- unix/sysintf.h Mon Oct 22 17:08:18 1990
- XX***************
- XX*** 3,8 ****
- XX--- 3,9 ----
- XX ** System specific code can be found in the config.h files for each
- XX ** of the system specifications.
- XX */
- XX+ #include <sys/types.h>
- XX #include <sys/stat.h>
- XX #include <signal.h>
- XX
- XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/sysintf.c Sat Oct 6 12:04:18 1990
- XX--- sysintf.c Sun Oct 28 23:16:20 1990
- XX***************
- XX*** 1,4 ****
- XX! /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/RCS/sysintf.c,v 1.1 90/10/06 12:04:17 dvadura Exp $
- XX -- SYNOPSIS -- system independent interface
- XX --
- XX -- DESCRIPTION
- XX--- 1,4 ----
- XX! /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/RCS/sysintf.c,v 1.1 90/10/06 12:04:17 dvadura Exp Locker: dvadura $
- XX -- SYNOPSIS -- system independent interface
- XX --
- XX -- DESCRIPTION
- XX***************
- XX*** 69,76 ****
- XX */
- XX
- XX #include <stdio.h>
- XX- #include "extern.h"
- XX #include "sysintf.h"
- XX #include "alloc.h"
- XX
- XX /*
- XX--- 69,76 ----
- XX */
- XX
- XX #include <stdio.h>
- XX #include "sysintf.h"
- XX+ #include "extern.h"
- XX #include "alloc.h"
- XX
- XX /*
- XX***************
- XX*** 97,103 ****
- XX if( lib != NIL(char) )
- XX return( seek_arch(basename(name), lib) );
- XX else
- XX! return( (STAT(name, &buf) == -1) ? (time_t)0 : buf.st_mtime );
- XX }
- XX
- XX
- XX--- 97,103 ----
- XX if( lib != NIL(char) )
- XX return( seek_arch(basename(name), lib) );
- XX else
- XX! return( (STAT(name, &buf) == -1) ? (time_t)0L : (time_t) buf.st_mtime );
- XX }
- XX
- XX
- XX***************
- XX*** 245,251 ****
- XX--- 245,253 ----
- XX Read_env_string(ename)
- XX char *ename;
- XX {
- XX+ #if !defined(_MSC_VER) || _MSC_VER < 600
- XX extern char *getenv();
- XX+ #endif
- XX return( getenv(ename) );
- XX }
- XX
- XX***************
- XX*** 277,283 ****
- XX--- 279,287 ----
- XX ReadEnvironment()
- XX {
- XX extern char **Rule_tab;
- XX+ #if !defined(_MSC_VER)
- XX extern char **environ;
- XX+ #endif
- XX char **rsave;
- XX
- XX rsave = Rule_tab;
- XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/readme/msdos Mon Oct 8 13:30:26 1990
- XX--- readme/msdos Mon Oct 29 10:31:02 1990
- XX***************
- XX*** 1,89 ****
- XX! Some notes on the MSDOS implementation of dmake.
- XX
- XX! Making the binary:
- XX! ------------------
- XX
- XX! Turbo-C: By default the turbo-C (make tcc) script will make a version
- XX! of the binary that is compiled for an 8088 and up cpu. Once made
- XX! you can make a version for a 186 or 286 by modifying
- XX! msdos/tccdos/config.mk and setting CFLAGS to contain the right
- XX! flags, comments are supplied in the makefile to do so.
- XX
- XX! The contents of the default response files
- XX! (named in msdos/tccdos/mk*.bat) assume specific locations for
- XX! your turbo-C libraries, you may need to edit these before actually
- XX! getting a successful binary linked.
- XX
- XX! Microsoft-C 4.0 to 5.1:
- XX! Is straight forward, just type 'make msc' and the compile will
- XX! chunk along.
- XX
- XX! Microsoft-C 6.0:
- XX! Is equally easy, just type 'make msc60' and the compile will
- XX! chunk along. Once made, if you want to use dmake to compile
- XX! itself then set the environment variable MSC_VER=6.0, otherwise
- XX! the compile flags will not be correct. You may also supply this
- XX! as an option on the dmake command line.
- XX
- XX- Memory Requirements and Swapping:
- XX- dmake requires quite a bit of memory to run. As a result
- XX- a swapping version of dmake is made if you issue the command
- XX- 'make tccswp', 'make mscswp' or 'make msc60swp'. If you leave
- XX- the 'swp' off then corresponding (as described above) non-swapping
- XX- versions are made.
- XX
- XX! The swapping code currently only swaps to DISK, I have left hooks
- XX! in to accomodate XMS and EMS, I have some code that performs the
- XX! necessary XMS/EMS accesses but have not incorporated it in yet.
- XX! It appears that a ramdisk seems to work just fine. If anyone
- XX! wishes to fill in the hooks please do and I'll be happy to include
- XX! them in future distributions.
- XX
- XX! dmake 'makefile.mk' control variables:
- XX! Initially dmake is compiled for the compact memory model.
- XX! Setting MODEL={s,c,m,l} on the command line will select a different
- XX! memory model. Setting NOSWAP:=1 on the command line
- XX! will disable the compile and linking of the swap code.
- XX! A summary of the available configuration variables follows:
- XX
- XX! MODEL={s,c,m,l} - Select {small, compact, medium, large}
- XX! memory model respectively.
- XX! NOSWAP:=y - If set, do not compile the dmake
- XX! swapping version of spawnvpe.
- XX! MSC_VER:=6.0 - Must be set if using MSC 6.0 and dmake
- XX! is used to make a new version of dmake.
- XX
- XX! ^C and stopping a make:
- XX! Handling of ^C in the swapping version seems to be somewhat
- XX! broken. I don't know what is wrong and would be happy to hear
- XX! of suggestions on how to fix the current mess :-) If you hit
- XX! ^C more than once when dmake is executing a child then I think
- XX! it will hang most machines. If you hit it only once or not at
- XX! all then things seem to work fine :-). I tried to get this right
- XX! by looking at other code, and making some assumptions about what
- XX! DOS does... NEVER ASSUME ANYTHING ABOUT WHAT DOS DOES :-)
- XX
- XX
- XX Other notes:
- XX ------------
- XX! dmake does not care if you are running command.com or some other command
- XX! interpretter, you must however specify the proper values of the environment
- XX! variables SHELL, SHELLFLAGS, GROUPSHELL, and GROUPFLAGS in order for things
- XX! to work correctly. Read the man page first.
- XX
- XX! Group recipes under DOS that use command.com as the command interpretter
- XX! require you to set the GROUPSUFFIX macro.
- XX
- XX! As shipped the startup.mk files for the DOS version try to figure out what
- XX! command interpretter you are using and set things up appropriately.
- XX! Two command interpretters are supported in the shipped startup.mk file,
- XX! command.com, and the MKS Korn shell.
- XX
- XX! dmake does not contain any builtin commands. It gets all commands it executes
- XX! from an external file system. It is therefore most useful if it is used in
- XX! conjunction with an environment similar to that provided by the MKS Tool kit,
- XX! or equivalent.
- XX
- XX! dmake now supports the MKS argument passing conventions. The facility is
- XX! enabled by setting .MKSARGS:=1 and is set by default in the startup.mk file
- XX! if an MKS Korn shell is detected as being the active command interpretter.
- XX--- 1,127 ----
- XX! Notes on the MSDOS implementation of dmake.
- XX
- XX! Bootstrapping the binary:
- XX! -------------------------
- XX! A make.bat file is provided to bootstrap the binary. The file contains
- XX! several targets for bootstrapping and invoking the batch file with no
- XX! arguments lists the possibilities shown below.
- XX
- XX! INDEX: You must specify one of:
- XX! tcc - Turbo C 2.0, compile.
- XX! tccswp - Turbo C 2.0 compile of swapping dmake.
- XX! msc40 - Microsoft C 4.0 compile.
- XX! msc50 - Microsoft C 5.0 compile.
- XX! msc51 - Microsoft C 5.1 compile.
- XX! msc60 - Microsoft C 6.0 compile.
- XX! msc40swp - Microsoft C 4.0, MASM 5.1 compile of swapping dmake.
- XX! msc50swp - Microsoft C 5.0, MASM 5.1 compile of swapping dmake.
- XX! msc51swp - Microsoft C 5.1, MASM 5.1 compile of swapping dmake.
- XX! msc60swp - Microsoft C 6.0, MASM 5.1 compile of swapping dmake.
- XX
- XX! Based on the compiler you have installed and the whether or not you
- XX! want the swapping version of dmake, you should select the appropriate
- XX! target and issue 'make.bat target'.
- XX
- XX! The batch file runs a second batch script that comes with the distribution
- XX! which compiles the sources using the appropriate compiler and flags. The
- XX! MSC Versions of the batch files should not require any further user
- XX! intervention during the compile. The Turbo-C version, as a final step,
- XX! invokes tlink with two response files. The second of these response files,
- XX! named in msdos/tccdos/mk*.bat, contains absolute path names to Turbo-C
- XX! libraries. You may need to edit these before getting a successful binary
- XX! linked.
- XX
- XX! By default the batch files make an executable that will run on an 8088
- XX! cpu and up. You can change that by making the initial version and then
- XX! editing the config.mk files found in either msdos/tccdos or msdos/mscdos
- XX! (depending on compiler you use), and selecting a diferrent cpu type by
- XX! supplying the appropriate compiler flags. You then need to remake dmake
- XX! again but this time use dmake itself, see below.
- XX
- XX
- XX! Using dmake to Make itself:
- XX! ---------------------------
- XX! If you use dmake to make itself you must first set a number of makefile
- XX! control variables, either through the environment or on the command line.
- XX
- XX! The following variables must be set:
- XX
- XX! OS - defines operating system (must be set)
- XX! OSRELEASE - particular version of it.
- XX! OSENVIRNOMENT - more customization
- XX
- XX! These three variables should be defined in your environment. Valid values
- XX! for them are listed in the dmake makefile.mk file. For example, if you
- XX! are using MSDOS, with Turbo-C then the valid settings are:
- XX
- XX+ set OS=msdos
- XX+ set OSRELEASE=tccdos
- XX+ set OSENVIRONMENT=
- XX
- XX+ dmake searches for an initial startup file, you should set the environment
- XX+ variable MAKESTARTUP to contain the full path to the startup file, eg:
- XX+
- XX+ set MAKESTARTUP=d:\usr\lib\startup.mk
- XX+
- XX+ The dmake makefile has several variables that can be user specified and
- XX+ default to reasonable values if not set.
- XX+
- XX+ MODEL - defines the model to compile, valid values are
- XX+ {s,c,m, or l}, defaults to 'c' (ie. compact) model
- XX+ if unspecified.
- XX+
- XX+ MSC_VER - defines the version of Microsoft C in use, should be set to
- XX+ one of 4.0, 5.0, 5.1 or 6.0; defaults to 6.0.
- XX+
- XX+ NOSWAP - If set to 'y', do not compile the dmake swapping version of
- XX+ spawnvpe. This has the effect of turning off swapping.
- XX+
- XX+ DEBUG - If set to '1' then make the debugging version of dmake, this
- XX+ will also set MODEL to 'l'.
- XX+
- XX+ To set the above variables you must specify them on the dmake command line
- XX+ or insert them into the makefile.mk script.
- XX+
- XX+
- XX+ Memory Requirements and Swapping:
- XX+ ---------------------------------
- XX+ The swapping code currently only swaps to DISK, I have left hooks
- XX+ in to accomodate XMS and EMS, I have some code that performs the
- XX+ necessary XMS/EMS accesses but have not incorporated it in yet.
- XX+ It appears that a ramdisk seems to work just fine. If anyone
- XX+ wishes to fill in the hooks please do and I'll be happy to include
- XX+ them in future distributions.
- XX+
- XX+
- XX+ ^C and stopping a make:
- XX+ -----------------------
- XX+ Thanks to the efforts of Len Reed, appears to now work. I have been unable
- XX+ to hang my machine if it's swapped out and I hit ^C a couple thousand times.
- XX+ It does stop and cleans up nicely. So I guess it works :-). Actually, let
- XX+ me know if you encounter problems with this and I'll try to duplicate
- XX+ them.
- XX+
- XX+
- XX Other notes:
- XX ------------
- XX! dmake does not care if you are running command.com or some other command
- XX! interpretter, you must however specify the proper values of the environment
- XX! variables SHELL, SHELLFLAGS, GROUPSHELL, and GROUPFLAGS in order for things
- XX! to work correctly. Read the man page first.
- XX
- XX! Group recipes under DOS that use command.com as the command interpretter
- XX! require you to set the GROUPSUFFIX macro.
- XX
- XX! As shipped the startup.mk files for the DOS version try to figure out what
- XX! command interpretter you are using and set things up appropriately.
- SHAR_EOF
- echo "End of part 2, continue with part 3"
- echo "3" > s2_seq_.tmp
- exit 0
-
-